#!/usr/bin/env python3
# Created by han on 2016/7/4
import socket


class myclient:
    def __init__(self, ip, port, name):
        self.ip = ip
        self.port = port
        self.name = name

    def cmd(self):
        ip_port = (self.ip, self.port)
        sk = socket.socket()
        sk.connect(ip_port)
        recv_data = sk.recv(1024)
        print(recv_data.decode())
        while True:
            cmd_data = input(">>: ").strip() #格式化命令数据
            if not cmd_data:      #如果输入命令为空，则重新输入
                continue
            if cmd_data == "exit":  #如果命令为exit 为退出，终端本次通话
                break
            sk.sendall(bytes(cmd_data, "utf8"))   #正常就传送命令数据
            ready_data = sk.recv(1024)            #然后接受准备数据
            raw_data = ready_data.decode()        #解码准备接收数据
            # print(raw_data)
            if raw_data.startswith("ready"):      #如果这个数据开头是ready开始的
                raw_len = int(raw_data.split("|")[-1]) #则获取长度
                # print("len======",raw_len,type(raw_len))
                client_ready = bytes("start","utf8")  #准备开始数据
                sk.sendall(client_ready)              #发送可以接受数据的信号
                data_len = 0                           #初始化长度
                data = b""                             #初始化数据
                while data_len < raw_len:
                    recv_data = sk.recv(1024)          #循环接受数据
                    data_len+=len(recv_data)           #循环增加数据长度
                    data+=recv_data                    #循环将数据相加
                    print("all_len : %d,local_len : %d"% (raw_len, data_len))
                print(data.decode())
            else:
                error_data = sk.recv(1024)
                print(error_data.decode())
        sk.close()